iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

LeetCode-30 Days of JavaScript系列 第 6

LeetCode JS30-Day06 | 陣列 Array.filter() - 2634. Filter Elements from Array

  • 分享至 

  • xImage
  •  

Day06 - 2634. Filter Elements from Array EASY

Description❓

Given an integer array arr and a filtering function fn, return a filtered array filteredArr.

The fn function takes one or two arguments:

  • arr[i] - number from the arr
  • i - index of arr[i]

filteredArr should only contain the elements from the arr for which the expression fn(arr[i], i) evaluates to a truthy value. A truthy value is a value where Boolean(value) returns true.
Please solve it without the built-in Array.filter method.

接受一個整數陣列arr和過濾函數fn並且返回對原陣列進行過濾後的新陣列filteredArr

fn 函數接受一個或兩個參數:

  • arr[i] - arr 中的數字
  • i - arr[i] 的索引

FilteredArr應該只包含arr中表達式fn(arr[i], i)計算結果為真值的元素。
請在沒有使用Array.filter()的情況下解決這個問題。

Points

Solution✍️

[ ▶️挑戰這一題 ][ 本日代碼 ]

  1. 題目需要我們設計一個帶入整數陣列和過濾函式,不使用array.filter(),返回篩選後陣列的函式。
const filter=(arr,fn)=>{
   let filteredArr = [];
   ...
   return filteredArr;
}
  1. 用for迴圈遍歷 判斷調用fn()結果是否為真值
  2. 如果成立將fn()返回的值 push 到 filteredArr
const filter=(arr,fn)=>{
   let filteredArr = [];
   for (let i = 0; i < arr.length; i++) {
      if (fn(arr[i],i)) {
         filteredArr.push(arr[i]);
      }
   }
   return filteredArr;
}

Testcase

let arr1 = [0,10,20,30];
function greaterThan10(n) { return n > 10; }
console.log(filter(arr1,greaterThan10));
//Testcase
let arr2 = [1,2,3];
function firstIndex(n, i) { return i === 0; }
console.log(filter(arr2,firstIndex));
let arr3 = [-2,-1,0,1,2];
function plusOne(n) { return n + 1 }
console.log(filter(arr3,plusOne));

上一篇
LeetCode JS30-Day05 | 轉換陣列元素- 2635. Apply Transform Over Each Element in Array
下一篇
LeetCode JS30-Day07 | 陣列 Array.reduce() - 2626. Array Reduce Transformation
系列文
LeetCode-30 Days of JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言